package com.example.movie.mate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.movie.mate.pojo.core.Principle;
import com.example.movie.mate.pojo.entity.User;
import com.example.movie.mate.pojo.param.UserLoginParam;
import com.example.movie.mate.pojo.param.UserRegisterParam;
import com.example.movie.mate.pojo.vo.UserVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 用户服务接口
 */
@Transactional
public interface IUserService {

    /**
     * 用户登录
     *
     * @param param 用户登录参数对象
     * @return 当前操作的用户信息
     */
    Principle login(UserLoginParam param);

    /**
     * 用户注册
     *
     * @param param 用户注册参数对象，包含用户注册所需的信息，如用户名、密码等
     */
    void register(UserRegisterParam param);

    /**
     * 根据用户ID删除用户
     *
     * @param id 需要删除的用户ID
     */
    void deleteById(Long id);

    /**
     * 根据用户ID查询用户信息
     *
     * @param id 需要查询的用户ID
     * @return 用户信息
     */
    UserVO selectById(Long id);

    /**
     * 查询所有用户信息
     *
     * @return 用户信息列表
     */
    List<UserVO> selectAll();
}
